<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>

/*
    都是循环遍历数组中的每一项
    每次执行匿名函数都支持三个参数，参数分别为item（当前每一项），index（索引值），arrself（原数组）
    匿名函数中的this都是指向window
    只能遍历数组
*/  

    //forEach循环 不能跳过或者终止循环  
    const a = ["a","s","c"]
    a.dd="11"
    a.forEach(index =>{
        // if (index ===‘ss’) {
        // break;
        // }                    //注意再forEach中 无法终止循环 如果终止循环会报错
    console.log(index)// a ss cc
    }) 

    //forEach 是不会返回有意义的数据  会改变原始的数组的值  
    //map     返回一个新的数组        原本的数组不受的影响

    //forEach 适合你并不打算改变数据的时候  
    let arr = ["a","b","c","d"]
    arr.forEach((i)=>console.log(i))  //a b c d 
    
    //map适用于你要改变数据值的时候 不仅仅它更快 返回一个经过处理后的新数组，但不改变原数组的值。
    //优点你可以使用复合操作.map().reduce()....编写更强劲逻辑 
    let arr2 = [1,2,3,4,5,6];
    let narr = arr2.map(num=>num*2).filter(num=>num>5)
    console.log(narr)  
    //[6, 8, 10, 12]   //这里使用map把每个元素*2 然后接着过滤出>5的元素  

    var a = [null, , undefined]
    for (let i = 0; i < a.length; i++) {
        console.log('a', a[i]) // null undefined undefined
    }
    a.forEach(item => {
        console.log('item', item) // null undefined
    });
    //forEach()方法不会跳过undefined和null，但会跳过空位。
    //for循环不会跳过空位，会认为是undefined。






</script>